package main

import (
	"fmt"
	"unicode/utf8"
)

// 字符和字符串处理
func main() {
	s := "Yes非常好"
	fmt.Println(s)
	fmt.Println(len(s))
	fmt.Printf("%s\n", []byte(s))
	for _, b := range []byte(s) {
		fmt.Printf("%X ", b) //  每个中文 3字节
	}
	fmt.Println()
	for i, ch := range s {
		fmt.Printf("(%d %X)", i, ch)
	}
	fmt.Println()
	fmt.Println("----------")

	fmt.Println(utf8.RuneCountInString(s))

	bytes := []byte(s)
	for len(bytes) > 0 {
		ch, size := utf8.DecodeRune(bytes)
		bytes = bytes[size:]
		fmt.Printf("%c ", ch)
	}
	fmt.Println()
	fmt.Println("----------")
	for i, ch := range []rune(s) {
		fmt.Printf("(%d %c)", i, ch)
	}
	fmt.Println()
	fmt.Println("----------")
	/*
		使用range 遍历 pos， rune对
		使用utf8.RuneCountInString获得字符数量
		使用len获得字节长度
		使用[]byte获得字节
	*/

	/*
		其他字符串操作
			Fields , Split, Join
			Contains, Index,
			ToLower, ToUpper
			Trim, TrimRight, TrimLeft
	*/

}
